/*
 * Proyecto Manejador de Proyectos
 * @Autor Hector Hurtado
 */
package Mproyectos.modelo;

import Mproyectos.entidades.GrupoInvestigacion;
import java.util.Collection;
import javax.ejb.Stateless;
import javax.faces.bean.ViewScoped;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
//import org.apache.log4j.Logger;

/**
 * Clase que que implementa el acceso a la persistencia
 */
@ViewScoped
@Stateless
public class FachadaGrupoInvestigacion {

    /**
     * Manejador de entidades
     */
    @PersistenceContext(unitName = "ManejadorProyectosPU")
    private EntityManager em;

    /**
     * Adiciona un grupo de Investigacion. Si el grupo de Investigacion ya
     * existe lanza una excepcion
     *
     * @param grupo de Investigacion a adicionar
     */
    public void adicionar(GrupoInvestigacion grupoInvestigacion) {
        em.persist(grupoInvestigacion);
    }

    /**
     * Actualiza un grupo de Investigacion. Actualiza los datos del grupo de
     * Investigacion
     *
     * @param grupo de Investigacion a adicionar
     */
    public void actualizar(GrupoInvestigacion grupoInvestigacion) {
        em.merge(grupoInvestigacion);
    }

    /**
     * Elimina el grupo de Investigacion .
     *
     * @param grupo de Investigacion a eliminar
     */
    public void eliminar(GrupoInvestigacion grupoInvestigacion) {
        em.remove(em.merge(grupoInvestigacion));
    }

    /**
     * Busca el grupo de Investigacion con el nombre dado. Retorna null si no
     * existe
     *
     * @param nombre Nombre del grupo de Investigacion
     * @return null si el grupo de Investigacion no existe o el objeto grupo de
     * Investigacion
     */
    public GrupoInvestigacion buscar(String nombre) {
        return em.find(GrupoInvestigacion.class, nombre);
    }

    /**
     * Retorna TODOS los grupo de Investigacion que se han almacenado
     *
     * @return Lista con los grupos de Investigaciones
     */
    public Collection<GrupoInvestigacion> listar() {
        Query query = em.createQuery("SELECT a FROM GrupoInvestigacion a ");
        return (Collection<GrupoInvestigacion>) query.getResultList();
    }
}
